// Variables para el manejo de hojas var hojaPrincipal = "Hoja 1"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var hoja = ss.getSheetByName(hojaPrincipal); // Variables obtenidas de funciones por return var e_number; // función para manejar las solicitudes HTTP POST entrantes. Cuando se recibe una solicitud POST, llama a la función handleRepose y le pasa el objeto de solicitud e. function doPost(e){ return handleRepose(e) ; } // Código para crear o obtener una hoja llamada '_Logs' function crearHojaLogs() { // se crea una variable para la hoja de errores, elcódigo comprueba si la hoja ya existe, y si no la inserta. var sheet_log = ss.getSheetByName('_Logs'); if (!sheet_log) { ss.insertSheet('_Logs'); sheet_log = ss.getSheetByName('_Logs'); } // Registramos el número de ejecuciones if (sheet_log.getRange('A1').isBlank()) { sheet_log.getRange('A1').setValue(1); // actualiza el recuento de ejecuciones en la celda A1 de la hoja '_Logs'sumandole 1 } else { sheet_log.getRange('A1').setValue(sheet_log.getRange('A1').getValue() + 1); } // Devuelve el número de ejecución y lo almacena en la variable e_number e_number = sheet_log.getRange('A1').getValue(); return e_number; } // Función para function handleRepose(e) { //llamamos a la función que crea la hoja de errores y a la que crea las hojas de datos crearHojaLogs() try{ // Cabecera // La creamos si no existe if(hoja.getRange('A1').isBlank()){ var h_row = []; //contenedor para almacenar con push los nombres de las cabeceras h_row.push("cen"); // numero de ejecuciones h_row.push("fecha-hora"); h_row.push("nombre"); h_row.push("Humedad Relativa %"); h_row.push("Bateria V"); h_row.push("Temperatura ºC"); h_row.push("Pseudónimos");//está columna no tiene datos entrantes. es para añadir un nombre alternativo //insertamos en la primera fila la cabecera hoja.getRange(1, 1, 1, h_row.length).setValues([h_row]); } // Parseamos los datos entrantes, que vienen en formato JSON // se explicará como llamar los datos dentro del JSON con mas detalle en otro ejercicio var jsonData = JSON.parse(e.postData.contents); var row = []; row.push(e_number); row.push(new Date()); row.push(jsonData.end_device_ids.device_id); row.push(jsonData.uplink_message.decoded_payload.Hum_SHT !== undefined ? jsonData.uplink_message.decoded_payload.Hum_SHT.toString().replace('.', ',') : ''); row.push(jsonData.uplink_message.decoded_payload.BatV !== undefined ? jsonData.uplink_message.decoded_payload.BatV.toString().replace('.', ',') : ''); row.push(jsonData.uplink_message.decoded_payload.TempC_SHT !== undefined ? jsonData.uplink_message.decoded_payload.TempC_SHT.toString().replace('.', ',') : ''); hoja.appendRow(row); } catch (err) { // Guardamos los errores que haya podido haber var sheet_log = ss.getSheetByName('_Logs'); sheet_log.appendRow([e_number, err.message]); } }